// interface IPerson {
// 	name: string
// 	age: number
// 	sex: string
// 	// new(name: string, age?: number)
// }


// 父类
class GrandFather {
	// 公共属性 任何人都可以访问
	public name: string
	public age: number
	// 保护属性
	protected weight: number
	//  构造函数
	constructor(weight: number, name: string, age: number) {
		this.name = name
		this.age = age
		this.weight = weight
	}
	sayName() {
		console.log(this.name);
	}
}
// 子类
class Father extends GrandFather {
	// 公共属性  我们可以自由的访问程序里定义的成员。
	public sex: string
	// 私有属性   当成员被标记成 private时，它就不能在声明它的类的外部访问
	private money: number


	constructor(sex: string, name: string, age: number, weight: number) {
		// 如果继承 extends 父类 必须调用父类的构造器
		// 调用父类的constructor
		super(weight, name, age)
		this.sex = sex
		this.money = 1000
		// 因为 weight 保护属性 所以可以在子类访问
		this.weight //允许访问
	}
}


const p1 = new GrandFather(120, '张三', 16)
const p2 = new Father('男', '李四', 18, 160)


